<?php

/**
 * Clase encargada de invocar al servicio de detección de idiomas de Google para así decidir
 * en que idioma está escrito un cierto texto que se le pase.
 *
 */
class detectar_idioma {

	private $reliable;
	private $texto;
	private $confidence;

	/**
	 * Devuelve el valor del atributo reliable para saber si la conclusión alcanzada por el 
	 * servicio de detección de idiomas resulta confiable.
	 *
	 * @return unknown
	 */
	public function is_reliable()
	{
		return $this->reliable;
	}
	
	/**
	 * Función para llamar al servicio web de Google. Dice si el texto pasado como parámetro
	 * está en el idioma pasado como parámetro (en cuyo caso devuelve true) o no (devuelve false).
	 *
	 * @param unknown_type $texto
	 * @param unknown_type $idioma
	 * @return unknown
	 */
	public function comprobar_idioma($texto,$idioma)
	{	
		$iguales = false;
		$url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=".urlencode($texto);
		//PARAMETERS
		$postData['v'] = "1.0";
		$postData['q'] = urlencode($texto);
		
		$sesionCURL = curl_init($url);
		curl_setopt($sesionCURL,CURLOPT_RETURNTRANSFER, true);
		$out = curl_exec($sesionCURL);
		curl_close($sesionCURL);
		
		//En $out tenemos la respuesta obtenida.
		$resultado = json_decode($out);
	
		$language = $resultado->responseData->language;		
		
		//Filtramos el resultado por si éste es pt que da problemas.
		$language = $this->equivalencia_idioma($language);
		
		if($language==$idioma)
			$iguales=true;
				
		return $iguales;
	}
	
	/**
	 * A esta función se le pasa el idioma que nos devuelve Google
	 * y lo "traduce" a la notación que usamos en el resto de sitios
	 * del proyecto. Actualmente solo tiene aplicación en caso del 
	 * portugués, que difiere entre Google y la web Europea.
	 *
	 * @param unknown_type $idioma
	 * @return unknown
	 */	
	public function equivalencia_idioma($idioma)
	{
		switch($idioma)
		{
			case "pt-PT":
				$idioma='pt';
				break;
		}
		return $idioma;
	}

	/**
	 * Obtiene el valor del atributo confidence.
	 *
	 * @return unknown
	 */	
	public function get_confidence()
	{
		return $this->confidence;
	}
	
}

?>